From 2e1328ab54eb4ac826ff1ef89ae2cf76fa872bf3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Wed, 23 Aug 2017 22:43:34 +0200 Subject: [PATCH] babl-icc: detect 2.2 and 1.8 gammas LUTs --- babl/babl-icc.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/babl/babl-icc.c b/babl/babl-icc.c index f48a9e0..649ed7d 100644 --- a/babl/babl-icc.c +++ b/babl/babl-icc.c @@ -311,13 +311,63 @@ static const Babl *babl_trc_lut_find (float *lut, int lut_size) if (match) return babl_trc_gamma (1.0); + /* look for 2.2 match: */ + match = 1; + if (lut_size > 1024) + { + for (i = 0; match && i < lut_size; i++) + { + fprintf (stderr, "%i %f %f\n", i, + lut[i], + pow ((i / (lut_size-1.0)), 2.2)); + if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 2.2)) > 0.0001) + match = 0; + } + } + else + { + for (i = 0; match && i < lut_size; i++) + { + if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 2.2)) > 0.001) + match = 0; + } + } + if (match) + return babl_trc_gamma(2.2); + + + /* look for 1.8 match: */ + match = 1; + if (lut_size > 1024) + { + for (i = 0; match && i < lut_size; i++) + { + fprintf (stderr, "%i %f %f\n", i, + lut[i], + pow ((i / (lut_size-1.0)), 1.8)); + if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 1.8)) > 0.0001) + match = 0; + } + } + else + { + for (i = 0; match && i < lut_size; i++) + { + if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 1.8)) > 0.001) + match = 0; + } + } + if (match) + return babl_trc_gamma(2.2); + + /* look for sRGB match: */ match = 1; if (lut_size > 1024) { for (i = 0; match && i < lut_size; i++) { - if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.00001) + if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.0001) match = 0; } } @@ -325,7 +375,7 @@ static const Babl *babl_trc_lut_find (float *lut, int lut_size) { for (i = 0; match && i < lut_size; i++) { - if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.015) + if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.001) match = 0; } } -- 2.30.2